package com.minimalist.lindi.service;

import com.minimalist.common.config.mybatis.bo.PageResp;
import com.minimalist.common.entity.lindi.po.LindiTradeApplicationInvoice;
import com.minimalist.common.entity.lindi.vo.tradeapplicationinvoice.LindiTradeApplicationInvoiceQueryVO;
import com.minimalist.common.entity.lindi.vo.tradeapplicationinvoice.LindiTradeApplicationInvoiceVO;

import java.util.List;
import com.mybatisflex.core.service.IService;

/**
 * 林地指标交易平台_交易申请发票 服务层。
 *
 * @author 11987
 * @since 2025-06-04
 */
public interface LindiTradeApplicationInvoiceService extends IService<LindiTradeApplicationInvoice> {

    /**
     * 添加交易申请发票
     *
     * @param tradeApplicationInvoiceVO 交易申请发票VO
     */
    void addTradeApplicationInvoice(LindiTradeApplicationInvoiceVO tradeApplicationInvoiceVO);

    /**
     * 根据ID删除交易申请发票
     *
     * @param tradeApplicationInvoiceId 交易申请发票ID
     */
    void deleteTradeApplicationInvoiceByTradeApplicationInvoiceId(Long tradeApplicationInvoiceId);

    /**
     * 根据ID更新交易申请发票
     *
     * @param tradeApplicationInvoiceVO 交易申请发票VO
     */
    void updateTradeApplicationInvoiceByTradeApplicationInvoiceId(
            LindiTradeApplicationInvoiceVO tradeApplicationInvoiceVO);

    /**
     * 分页查询交易申请发票列表
     *
     * @param queryVO 查询条件
     * @return 分页结果
     */
    PageResp<LindiTradeApplicationInvoiceVO> getPageTradeApplicationInvoiceList(
            LindiTradeApplicationInvoiceQueryVO queryVO);

    /**
     * 根据ID查询交易申请发票
     *
     * @param tradeApplicationInvoiceId 交易申请发票ID
     * @return 交易申请发票VO
     */
    LindiTradeApplicationInvoiceVO getTradeApplicationInvoiceByTradeApplicationInvoiceId(
            Long tradeApplicationInvoiceId);

    /**
     * 根据交易申请ID查询发票列表
     *
     * @param tradeApplicationId 交易申请ID
     * @return 发票列表
     */
    List<LindiTradeApplicationInvoiceVO> getTradeApplicationInvoiceListByTradeApplicationId(
            Long tradeApplicationId);
}
